// pages/todo/todolist.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 文本框的数据模型
    input:"",
    // 任务清单的数据模型
    todos:[
      {name:"learning webapp",completed:false},
      {name:"learning javascript",completed:true},
      {name:"learning HTML",completed:false},
    ],
    leftCount:2,
    allCompleted:false
  },
  // 拿到文本框里边的值  因为小程序的数据绑定是单向的 必须跟文本注册改变事件
  inputChangeHandle: function (e) {
    console.log(e)
    //model里设置值
    this.setData({ input : e.detail.value})
  },
  addTodoHandle(){
    // console.log("aaa")
    if (!this.data.input) {
      return
    }
    // 将文本框里边的内容及状态添加到数组
    var todos = this.data.todos;
    todos.push({
      name:this.data.input,
      completed:false
    })

    // 界面更新
    this.setData({
      todos:todos,
      input:"",
      leftCount:this.data.leftCount+1
    })
  },
  // 切换当前点中item的完成状态
  toggleTodoHandle(e){
    // console.log(e.currentTarget.dataset.index)
    var item = this.data.todos[e.currentTarget.dataset.index]
    console.log(item)
    item.completed = !item.completed;
    //根据当前任务的完成状态来决定leftcount是+1还是-1
    var leftCount = this.data.leftCount + (item.completed ? -1 : 1)

    this.setData({
      todos:this.data.todos,
      leftCount:leftCount
    })

  },
  // 需要注意冒泡的问题
  removeTodoHandle(e){
    // todos会移除index所指向的元素
    var item = this.data.todos.splice(e.currentTarget.dataset.index,1)[0];
    // console.log(item)
    var leftCount = this.data.leftCount - (item.completed ? 0 : 1)
    // 更新界面
    this.setData({
      todos:this.data.todos,
      leftCount:leftCount
    })

  },


  toggleAllHandle(){
    // this指向当前页面对象
    this.data.allCompleted = !this.data.allCompleted;
    var todos = this.data.todos;
    // var that = this;
    // todos.forEach(function(item){
    //   item.completed = that.data.allCompleted;
    // })
    todos.forEach((item)=>{
      item.completed = this.data.allCompleted;
    })
    var leftCount = this.data.allCompleted ? 0 : this.data.todos.length
    // 更新界面
    this.setData({
      todos:todos,
      leftCount:leftCount
    })

  },

  chearHandle(){
    // var todos = [];
    // this.data.todos.forEach((item)=>{
    //   if (!item.completed) {
    //     todos.push(item)
    //   }
    // })
    var todos = this.data.todos.filter(function(item){
      return  !item.completed
    })
    
    this.setData({
      todos:todos,
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

 
})